package com.bitin.adorn.common.payload;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.data.domain.Page;

import java.util.List;

/**
 * @author Mr.Lu
 * @since 2024/10/12 9:41
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Pagination<T> {
    /**
     * 总条数
     */
    private long total;
    /**
     * 当前分页总页数
     */
    private long pages;
    /**
     * 当前页
     */
    private long current;
    /**
     * 每页显示条数
     */
    private long size;
    /**
     * 分页记录列表
     */
    private List<T> list;

    public static <T> Pagination<T> paging(Page<T> page) {
        Pagination<T> pagination = new Pagination<>();
        pagination.setList(page.getContent());
        pagination.setTotal(page.getTotalElements());
        pagination.setPages(page.getTotalPages());
        pagination.setCurrent(page.getNumber() + 1);
        pagination.setSize(page.getSize());
        return pagination;
    }

    /**
     * baomidou 内置分页插件
     */
//    public static <T> Pagination<T> paging(IPage<T> page) {
//        Pagination<T> pagination = new Pagination<>();
//        pagination.setList(page.getRecords());
//        pagination.setTotal(page.getTotal());
//        pagination.setPages(page.getPages());
//        pagination.setCurrent(page.getCurrent());
//        pagination.setSize(page.getSize());
//        return pagination;
//    }
}
